iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
永豐金融APIs

永豐金融APIs - 從零開始到放棄!?系列 第 14

LineBot - 自動回覆 API

  • 分享至 

  • xImage
  •  

申請完 Line 機器人的帳號後,接下來要做的就是建立一個自動回覆的 api 程式,Line 也有提供 python 的套件 - line-bot-sdk,所以只要下載後,依照範例,就可以建立一個簡單的自動回覆。

  • 安裝 line-bot-sdk, flask
pip install line-bot-sdk flask

ps: flask 是 python 的一個輕量化 web server 套件

  • 建立 main.py 檔案,內容如下(以下內容為 line-bot-sdk sample code)
from flask import Flask, request, abort
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage

app = Flask(__name__)

# 把昨天 copy 的兩個 token 貼到這裡來
line_bot_api = LineBotApi('CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('CHANNEL_SECRET')

@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        print("Invalid signature. Please check your channel access token/channel secret.")
        abort(400)

    return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TExtSendMessage(text=event.message.text)
    )

if __name__ == "__main__":
    app.run()

  • 在命令視窗下執行 main.py
python main.py

這時會看到你的 server 已經跑起來了,路徑為 http://127.0.0.1:8080

  • 再來讓 LineBot 可以連接到這個 api,因為還在測試中,所以暫時先放在本機電腦裡,這時可以利用 ngrok 為本機建立一個連外的網址,讓 LineBot 可以找到我們的 api

    1. ngrok 官網, 按下 [Get started for free]
    2. 註冊新帳號
    3. 登入後,會到教學頁面,先將 ngrok 下載後,解壓縮後執行,會出現一個指令視窗。
    4. 先設定 Authtoken,在 ngrok 教學頁面左邊有一個 [Your Authtoken],點下去後,可以看到 authtoken,按下 copy 後,就可以複制下來,然後在 ngrok 的指令視窗執行以下命令
    ngrok authtoken [剛剛複制的 authtoken]
    
    1. 執行以下命令,為 http://127.0.0.1:8080 建立一個對外的連接通道
    ngrok http 8080
    
  • 這時會看到以下的圖,Forwarding 的部份就是對外的網址
    ngrok forwarding

  • 回到 Line developers 的 Messaging API,把這個網址後面加 /callback 貼到 Webhook URL
    ngrok webhook url

  • 設定好後,可以按下 [Verify] 檢查一下,如果有跳出 Success 的提示,代表你已經連結成功,這時就可以到 Line 測試,在和這個 LineBot 的對話視窗打字,它會回你一模一樣字內容

  • 如果有預設的自動回覆,可以在 line 官方帳號 裡關閉預設的自動回覆。
    line auto reply setting
    ps: Line 官方帳號這裡有不少自動回覆的功能可以設定,不過這不是我們介紹的重點,有興趣的朋友可以可以試試


上一篇
LineBot - 申請
下一篇
LineBot - 圖文選單
系列文
永豐金融APIs - 從零開始到放棄!?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言